www.gusucode.com > VC++网络版的打字软件源程序-源码程序 > VC++网络版的打字软件源程序-源码程序\code\TypeSrv V2.0\QuestionDlg.cpp
//Download by http://www.NewXing.com // QuestionDlg.cpp : implementation file // #include "stdafx.h" #include "typesrv.h" #include "QuestionDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define MAX_QUESTION_LEN 65525 //试题最大字节数 ///////////////////////////////////////////////////////////////////////////// // CQuestionDlg dialog CQuestionDlg::CQuestionDlg(CWnd* pParent /*=NULL*/) : CDialog(CQuestionDlg::IDD, pParent) { //{{AFX_DATA_INIT(CQuestionDlg) m_strQuestionInfo = _T(""); m_strQuestion = _T(""); //}}AFX_DATA_INIT m_pSet=NULL; } void CQuestionDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CQuestionDlg) DDX_Control(pDX, IDC_INFO, m_CtrlInfo); DDX_Control(pDX, IDC_TEXT, m_CtrlQuestion); DDX_Control(pDX, IDC_FLAG, m_CtrlFlag); DDX_Control(pDX, IDC_BTN_SAVE, m_SaveBtn); DDX_Control(pDX, IDC_BTN_EDIT, m_EditBtn); DDX_Control(pDX, IDC_BTN_DELETE, m_DeleteBtn); DDX_Control(pDX, IDC_BTN_CANCEL, m_CancelBtn); DDX_Control(pDX, IDC_BTN_ADD, m_AddBtn); DDX_Text(pDX, IDC_INFO, m_strQuestionInfo); DDX_Text(pDX, IDC_TEXT, m_strQuestion); DDV_MaxChars(pDX, m_strQuestion, 65525); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CQuestionDlg, CDialog) //{{AFX_MSG_MAP(CQuestionDlg) ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd) ON_BN_CLICKED(IDC_BTN_SAVE, OnBtnSave) ON_BN_CLICKED(IDC_BTN_TOP, OnBtnTop) ON_BN_CLICKED(IDC_BTN_BOTTOM, OnBtnBottom) ON_BN_CLICKED(IDC_BTN_NEXT, OnBtnNext) ON_BN_CLICKED(IDC_BTN_PREV, OnBtnPrev) ON_BN_CLICKED(IDC_BTN_EDIT, OnBtnEdit) ON_BN_CLICKED(IDC_BTN_DELETE, OnBtnDelete) ON_BN_CLICKED(IDC_BTN_CANCEL, OnBtnCancel) ON_CBN_SELCHANGE(IDC_FLAG, OnSelchangeFlag) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CQuestionDlg message handlers BOOL CQuestionDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_pSet=new CQuestionSet; m_pSet->Open(); if(!m_pSet->IsEOF()) { m_pSet->MoveFirst(); m_strQuestionInfo=m_pSet->m_Info; m_strQuestion=m_pSet->m_Text; SetFlag(m_pSet->m_Flag); UpdateData(FALSE);//把相应变量的值显示在控件上 m_SaveBtn.EnableWindow(FALSE); m_CancelBtn.EnableWindow(FALSE); m_CtrlQuestion.SetReadOnly(TRUE); m_CtrlInfo.SetReadOnly(TRUE); m_CtrlFlag.EnableWindow(FALSE); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } BOOL CQuestionDlg::DestroyWindow() { // TODO: Add your specialized code here and/or call the base class if(m_pSet!=NULL) { m_pSet->Close(); delete m_pSet; } return CDialog::DestroyWindow(); } void CQuestionDlg::OnBtnTop() { // TODO: Add your control notification handler code here if(!m_pSet->IsBOF()) { m_pSet->MoveFirst(); m_strQuestionInfo=m_pSet->m_Info; m_strQuestion=m_pSet->m_Text; SetFlag(m_pSet->m_Flag); UpdateData(FALSE);//把相应变量的值显示在控件上 } } void CQuestionDlg::OnBtnBottom() { // TODO: Add your control notification handler code here if(!m_pSet->IsEOF()) { m_pSet->MoveLast(); m_strQuestionInfo=m_pSet->m_Info; m_strQuestion=m_pSet->m_Text; SetFlag(m_pSet->m_Flag); UpdateData(FALSE);//把相应变量的值显示在控件上 } } void CQuestionDlg::OnBtnNext() { // TODO: Add your control notification handler code here if(!m_pSet->IsEOF()) { m_pSet->MoveNext(); m_strQuestionInfo=m_pSet->m_Info; m_strQuestion=m_pSet->m_Text; SetFlag(m_pSet->m_Flag); UpdateData(FALSE);//把相应变量的值显示在控件上 } else { // if(!m_pSet->IsBOF()) // { m_pSet->MoveLast(); // } } } void CQuestionDlg::OnBtnPrev() { // TODO: Add your control notification handler code here if(!m_pSet->IsBOF()) { m_pSet->MovePrev(); m_strQuestionInfo=m_pSet->m_Info; m_strQuestion=m_pSet->m_Text; SetFlag(m_pSet->m_Flag); UpdateData(FALSE);//把相应变量的值显示在控件上 } else { // if(!m_pSet->IsEOF()) // { m_pSet->MoveFirst(); // } } } void CQuestionDlg::OnBtnEdit() { // TODO: Add your control notification handler code here m_pSet->Edit(); m_AddBtn.EnableWindow(FALSE); m_EditBtn.EnableWindow(FALSE); m_DeleteBtn.EnableWindow(FALSE); m_SaveBtn.EnableWindow(TRUE); m_CancelBtn.EnableWindow(TRUE); m_CtrlQuestion.SetReadOnly(FALSE); m_CtrlInfo.SetReadOnly(FALSE); m_CtrlFlag.EnableWindow(TRUE); } void CQuestionDlg::OnBtnAdd() { // TODO: Add your control notification handler code here m_pSet->AddNew(); m_strQuestionInfo=""; m_strQuestion=""; UpdateData(FALSE);//把相应变量的值显示在控件上 m_AddBtn.EnableWindow(FALSE); m_EditBtn.EnableWindow(FALSE); m_DeleteBtn.EnableWindow(FALSE); m_SaveBtn.EnableWindow(TRUE); m_CancelBtn.EnableWindow(TRUE); m_CtrlQuestion.SetReadOnly(FALSE); m_CtrlInfo.SetReadOnly(FALSE); m_CtrlFlag.EnableWindow(TRUE); } void CQuestionDlg::OnBtnSave() { // TODO: Add your control notification handler code here if(m_pSet->CanUpdate()) { UpdateData();//对控件对应变量的值进行刷新 m_pSet->m_Info=m_strQuestionInfo; m_pSet->m_Text=m_strQuestion; m_pSet->m_Flag=m_nFlag; m_pSet->Update(); m_pSet->Requery(); } m_AddBtn.EnableWindow(TRUE); m_EditBtn.EnableWindow(TRUE); m_DeleteBtn.EnableWindow(TRUE); m_SaveBtn.EnableWindow(FALSE); m_CancelBtn.EnableWindow(FALSE); m_CtrlQuestion.SetReadOnly(TRUE); m_CtrlInfo.SetReadOnly(TRUE); m_CtrlFlag.EnableWindow(FALSE); } void CQuestionDlg::OnBtnDelete() { // TODO: Add your control notification handler code here if(MessageBox("真的要删除此记录吗?","提示窗口",MB_YESNO)==IDYES) { m_pSet->Delete(); m_pSet->Requery(); OnBtnNext(); } } void CQuestionDlg::OnBtnCancel() { // TODO: Add your control notification handler code here if(m_pSet->CanUpdate()) { m_pSet->Cancel(); m_pSet->Requery(); //m_pSet->MovePrev(); } m_AddBtn.EnableWindow(TRUE); m_EditBtn.EnableWindow(TRUE); m_DeleteBtn.EnableWindow(TRUE); m_SaveBtn.EnableWindow(FALSE); m_CancelBtn.EnableWindow(FALSE); m_CtrlQuestion.SetReadOnly(TRUE); m_CtrlInfo.SetReadOnly(TRUE); m_CtrlFlag.EnableWindow(FALSE); } void CQuestionDlg::OnSelchangeFlag() { // TODO: Add your control notification handler code here m_nFlag=m_CtrlFlag.GetCurSel(); } void CQuestionDlg::SetFlag(int nFlag) { switch(nFlag) { case 0: m_nFlag=0; m_CtrlFlag.SetWindowText("英文"); break; case 1: m_nFlag=1; m_CtrlFlag.SetWindowText("中文"); break; default: m_nFlag=0; m_CtrlFlag.SetWindowText("英文"); } }